﻿
#!/bin/bash
# crontab -e进入
#05 00 * * * /bin/sh /databack/db_all_back.sh 2>&1 > /dev/null
# 重启使配置生效
# /bin/systemctl restart  crond.service 
#功能说明：本功能用于备份数据库
#编写日期：2010/12/06
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin
#export PATH
#数据库用户名
DB_USER='root'
#数据库密码
DB_PASS='vkado$#_vlkmllmfv@#@#_#322323'
#数据库名,可以定义多个数据库，中间以空格隔开，如：test test1 test2
#备份时间
DBS="hyn_config hyn_budget hyn_summary hyn_archives hyn_duty hyn_approval hyn_personnel hyn_push"
TIME_BACKUP="$(date +%Y%m%d%H%M%S)"
#日志备份路径
DIR_LOG="/databack"
FILE_LOG="/databack/backup.log"
#数据备份路径
DIR_DATA="/databack/$(date +%Y/%m/%d)"
echo "${DIR_DATA}"
/usr/bin/mkdir -p ${DIR_DATA}

#日志记录头部
TOTAL_START="$(/usr/bin/date '+%Y-%m-%d %H:%M:%S')"
echo "-----备份开始时间为 ${TOTAL_START}-----" >> ${FILE_LOG}
#正式备份数据库
for DB in ${DBS}; do
    FILE_SQL="${DIR_DATA}/${DB}.${TIME_BACKUP}.sql"
    DB_START="$(/usr/bin/date +%s)"
    source=$(/usr/bin/mysqldump -u${DB_USER} -p${DB_PASS} --databases ${DB} > ${FILE_SQL}) 2>&1 >> ${FILE_LOG}
    #备份成功以下操作
    if [ "$?" == 0 ];then
        DB_STOP="$(/usr/bin/date +%s)"
        DB_EST="$((DB_STOP - DB_START))"
        echo "$(/usr/bin/date '+%Y-%m-%d %H:%M:%S')(${DB_START}->${DB_STOP})：数据库 ${DB} 备份成功。耗时 ${DB_EST} 秒。" >> ${FILE_LOG}
        #为节约硬盘空间，将数据库压缩。yum -y install pbzip2
        #/usr/bin/pbzip2 ${FILE_SQL} > /dev/null &
    else
        #备份失败则进行以下操作
        DB_STOP="$(/usr/bin/date +%s)"
        DB_EST="$((DB_STOP - DB_START))"
        echo "$(/usr/bin/date '+%Y-%m-%d %H:%M:%S')(${DB_START}->${DB_STOP})：数据库 ${DB} 备份失败。耗时 ${DB_EST} 秒。" >> ${FILE_LOG}
    fi
done
TOTAL_STOP="$(/usr/bin/date '+%Y-%m-%d %H:%M:%S')"
TIMESTAMP_START=$(/usr/bin/date -d "${TOTAL_START}" +%s)
TIMESTAMP_STOP=$(/usr/bin/date -d "${TOTAL_STOP}" +%s)
TOTAL_EST="$((TIMESTAMP_STOP - TIMESTAMP_START))"
echo "-----备份完成时间为${TOTAL_STOP}。耗时 ${TOTAL_EST} 秒-----" >> ${FILE_LOG}
#清除15天前的备份
find /databack/$(/usr/bin/date +%Y) -type f  -mtime +15 -delete

